# coding: utf-8
# @Author: ChuiZi

"""
该文件主要用作清理文件夹
"""
import os


# 删除指定路径下所有文件及文件夹
def deleteAllFile(localFilePath, delLocalFolder: bool = False):
    """删除指定路径下所有文件及文件夹

    :param localFilePath: 需要删除文件夹的绝对路径
    :param delLocalFolder: 是否删除当前文件夹,默认为False删除当前文件夹,不会创建
    :return:
    """
    deleteFile(localFilePath)
    deleteFolder(localFilePath)
    try:
        os.removedirs(localFilePath)
    except FileNotFoundError:
        pass
    if delLocalFolder:
        createFolder(localFilePath)


# 删除指定路径下所有目录及子目录内所有文件
def deleteFile(localFilePath):
    """
    删除指定路径下所有目录及子目录内所有文件
    :param localFilePath:指定路径
    """
    files = os.listdir(localFilePath)  # 遍历当前文件夹下所有的文件
    for file in files:
        file_abspath = os.path.join(localFilePath, file)  # 获取文件的绝对地址
        try:
            os.remove(file_abspath)
        except PermissionError:
            deleteFile(file_abspath)


# 找目录下符合后缀条件的文件,返回这些文件绝对路径组成的列表
def findAllFileBySuffix(folderPath, *fileSuffix, return_path=None):
    """寻找目录下符合后缀条件的文件,返回这些文件绝对路径组成的列表

    :param folderPath: 文件夹目录绝对地址
    :param fileSuffix: 所需要筛选的文件后缀
    :param return_path: 递归函数返回值临时文件
    :return: returnPath 返回符合筛选条件的文件的绝对路径组成的列表
    """
    if return_path is None:
        return_path = []
    files = os.listdir(folderPath)  # 遍历当前目录下所有文件
    for file in files:
        file_path = os.path.join(folderPath, file)  # 文件的绝对路径
        if os.path.splitext(file_path)[1].replace(".", "") in fileSuffix:  # 判断文件的后缀是否符合要求
            return_path.append(file_path)
        else:
            if os.path.isdir(file_path):  # 判断是否为文件夹,是则深入,不是进行下一步判断
                findAllFileBySuffix(file_path, return_path, *fileSuffix)
    return return_path


# 删除指定路径下所有目录及子目录内所有文件夹
def deleteFolder(local_folderPath):
    """
    删除指定路径下所有目录及子目录内所有文件夹
    :param local_folderPath:指定路径
    """
    files = os.listdir(local_folderPath)
    for file in files:
        file_abspath = os.path.join(local_folderPath, file)
        try:
            os.removedirs(file_abspath)
        except OSError:
            deleteFolder(file_abspath)


# 创建空白文件夹
def createFolder(local_folderPath):
    try:
        os.mkdir(local_folderPath)
    except FileExistsError:
        pass


if __name__ == '__main__':
    from lib import baseParams

    # deleteAllFile(os.path.join(baseParams.rootPath, "reports"))
    print(findAllFileBySuffix(os.path.join(baseParams.rootPath, r"testData\xls"), "xls"))
